/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Mercado.model;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 *
 * @author rafael
 */
public class Estoque extends Estoque_abstract{
    private int totalItens, totalProdutos;
    
    /**
     * Cria estoque.
     * Inicializa atributos do estoque.
     **/
    public Estoque(){
        super();
        carregaEstoque();
    }
    
    /**
     * Carrega o conteúdo do estoque.
     * Carrega todos os itens, quantidades dos mesmos e total de itens conforme
     * previamente informado em um arquivo.
     **/
    private void carregaEstoque(){
        try{
            String linha;
            String[] str;
            BufferedReader file = new BufferedReader(new FileReader("data/Estoque.csv"));
            Produto p;
            linha = file.readLine();
            int inicio = 0;
            while(true){
                /**
                 * str[0] Codigo
                 * str[1] Nome
                 * str[2] Preço
                 * str[3] Quantidade
                 */
                if(linha!=null){
                    str = linha.split(",");
                    if(str.length==4){
                        p = new Produto(str[1], Float.parseFloat(str[2]), Integer.parseInt(str[0]));
                        adicionaProduto(p, Float.parseFloat(str[3]));
                    }
                }
                else
                    break;
                linha = file.readLine();
            }
            file.close();
            System.out.println("Estoque carregado com sucesso!");
        }
        catch(IOException ex){
            System.err.println("Arquivo durante a leitura de Estoque.txt!");
        }
    }
    
    public void salvaEstoque(){
        try{
            BufferedWriter file = new BufferedWriter(new FileWriter("data/Estoque.csv"));
            int i=0;
            for(Produto p: getProdutos()){
                file.write(p.getCodigo()+","+p.getNome()+","+p.getPreco()+","+getQtdItens().get(i)+"\n");
                i++;
            }
            file.close();
            System.out.println("Estoque salvo com sucesso!");
        }catch(IOException ex){
            System.err.println("Arquivo durante a escrita de Estoque.txt!");
        }
    }
    
    public void geraRelatorio(){
        try {
            BufferedWriter file = new BufferedWriter(new FileWriter("relatorios/relatorio_estoque.xls"));
            file.write("Quantidade\tPreço\tNome\tCódigo\n"
                    +  "----------\t-----\t----\t------\n");
            int i;
            for(i=0;i<getTotalTipos();i++){
                file.write(getQtdItens().get(i)+"\tR$"+getProdutos().get(i).getPreco()+
                        "\t"+getProdutos().get(i).getNome()+"\t"+getProdutos().get(i).getCodigo()+"\n");
            }
            file.close();
            System.out.println("Relatório de estoque gerado com sucesso!");
        } catch (IOException ex) {
            System.err.println("Arquivo durante a escrita do relatório de estoque!");
        }
    }
}
